#include "PouvoirInvocation.h"
#include "Pouvoir_private.h"

#include "Des.h"
#include "Personnage.h"
#include "PersonnageMonstre.h"
#include "Jeu.h"
#include "Plateau.h"

Pouvoir* newPouvoirInvocation(Personnage* perso){
	Pouvoir* pouvoir;
	
	pouvoir = newPouvoir("Invocation",3,perso);
	pouvoir->appliquer = pouvoirInvocationAppliquer;
	pouvoir->canUseItNow = pouvoirInvocationCanUseItNow;
	
	return pouvoir;
}

int pouvoirInvocationAppliquer(Pouvoir* pouvoir,Jeu* jeu){
	Case* caze;
	Personnage* monstre;
	
	if(pouvoirGetType(pouvoir) != tpInvocation) return 0;
	if(!pouvoirInvocationCanUseItNow(pouvoir,jeu)) return 0;
	
	caze = persoGetCase(pouvoir->perso);
	/* TODO : calculer l'experience du monstre */
	monstre = newPersonnageMonstre(100,caze,persoGetJoueur(pouvoirGetPersonnage(pouvoir)));
	
	plateauPlacerEn(jeuGetPlateau(jeu),caze,monstre);
	
	
	return 1;
}


int pouvoirInvocationCanUseItNow(Pouvoir* pouvoir,Jeu* jeu){
	/* TODO ajouter si case == Sanctuaire => pas possible */
	if(caseGetType(persoGetCase(pouvoirGetPersonnage(pouvoir))) == tcSanctuaire) return 0;
	return (pouvoirGetQuantite(pouvoir) > 0) && (jeuGetMode(jeu) == mjPlateau);
}
